Kubernetes Object
とは
Label
概要
巨大で複雑なアプリケーションを動かしてきた Google の経験から生まれている。以下の教訓がある。
1つしか作らないものを嫌う 初回デプロイ時は 1 台のインスタンスでも、アプリケーションが成熟するにつれてこのように 1 つしかないものは複数に増えていく。1 つ 1 つを管理するのではなく、オブジェクト単位で管理する必要がある
強制された階層構造には不満が多い 階層構造でサービス間の関係を表すことは難しい
ルール
キー [prefix/]<name>
prefix は任意であり、指定する場合、DNS サブドメインでなくてはならない。253 文字以下
name は必須であり、64 文字以下
値 63文字以下の文字列
操作
Label セレクタ
Annotation
例えば、以下のような情報を付与できる。
どこからきたのか?
どのように使うのか?
どのようなポリシーなのか?
Label との使い分けは好みの問題であり、オブジェクトの情報を付与したいなら Annotation にしておいて、Label セレクタが使いたくなったら Label に昇格させるのもあり。
ルール
Label と同様。値はフリーフォーマットとなっている。バリデーションがされないので、エラーを追うのが難しくなる場合もある。
操作
code:bash
# 現在の Namespace 内のリソースの全てを一覧表示する
$ kubectl get <リソース名>
# 特定のリソースの情報を取得する
$ kubectl get <リソース名> <オブジェクト名>
# 特定のオブジェクトについて詳しい情報を取得する
$ kubectl describe <リソース名> <オブジェクト名>
# オブジェクトを Kubernetes 上に作成する
$ kubectl apply -f <オブジェクト定義ファイル(YAML,JSONファイル)>
# オブジェクトを編集する
# 最新の状態を Kubernetes からダウンロードし、エディタで開く。保存すると自動的に Kubernetes 側も更新される
$ kubectl edit <リソース名> <オブジェクト名>
# オブジェクトを削除する
$ kubectl delete -f <オブジェクト定義ファイル(YAML,JSONファイル)>
$ kubectl delete <リソース名> <オブジェクト名>